<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>demo</title>
<link rel="stylesheet" href="css/swiper.min.css">
<link rel="stylesheet" href="css/popup.css">
</head>
<body>
<div class="swiper-container">
    <div class="swiper-wrapper">
        <div class="swiper-slide color-blue color-white">
            <h3 class="header">Immutable Object（不可变对象）想破坏它也没办法+_+ </h3>
            <div class="main">
                <div class="main-content">
                    <div class="main-inner">
						<span class="title">问题描述：</span>
						<p>多线程环境中，一个对象常常会被多个线程共享，这个时候会有一个对象被不同的线程做不同的修改的问题，所以我们需要做一些事情来保证对象的一致性。</p>
						<span class="title">解决方案：</span>
						<p>用一个ImmutableObject类来存储不可变值的信息，改参与者不对外暴露任何可以修改其状态的方法，另一个类负责维护上一个类所创建信息的实体的变更，党相应的现实实体状态变更是，改参与者负责生成新的ImmutableObject，以反应新的状态。</p>
						<span class="title">适用场景：</span>
						<ol>
							<li>被建模对象的状态变化不频繁</li>
							<li>同时对一组相关的数据进行写操作，因此需要保证原子性</li>
							<li>适用某个对象作为安全的HashMap的Key</li>
						</ol>
						<span class="title">需要注意的问题：</span>
						<ol>
							<li>被建模对象的变更比较频繁的时候尽量不要使用</li>
							<li>使用等效或者近似的不可变对象</li>
							<li>防御性复制</li>
						</ol>
						<span class="title">其他小知识点：</span>
                        <p>. 上一章讲的是线程互斥的synchronized实现，这样做会影响性能，如何才能做到既不影响性能又能达到线程安全的目的呢，就是使用状态绝不会改变的类，Java中的应用就是String类。</p>
                        <p>. 这个模式很简单，就是将对象的所有字段都设为final的，这样就只有在构造的时候初始化一次，以后都是只读状态，当一个类不需要修改对象内变量时，可以使用Immutable模式。</p>                     
                    </div>
                </div>
            </div>
        </div>
        <div class="swiper-slide color-blue color-white">
            <h3 class="header">Guarded Suspension（保护性暂挂模式）好了我就告诉你*_- </h3>
            <div class="main">
                <div class="main-content">
                    <div class="main-inner">
						<span class="title">问题描述：</span>
						<p>多线程编程中，往往将一个任务分解为不同的部分，将其交由不同的线程来执行，这些线程相互协作的时候，会出现一个线程等待另一个线程一定操作过后才能进行的情景，这个时候就需要这个线程退出执行。</p>
						<span class="title">解决方案：</span>
						<p>有一个类GuardedObject包含受保护方法的对象，存放被保护对象的方法和被保护对象的唤醒方法。
						一个类GuardedAction抽象目标动作，并关联了目标动作锁需的保护条件.
						一个ConcreteGuardedAction应用程序锁体现的具体目标动作及其关联的保护条件，
						一个Predicate抽象保护条件，ConCretePredicate应用程序锁实现的具体保护条件，
						Blocker负责执行受保护的方法所在线程的挂起和唤醒。
						并执行ConcreteGuardedAction锁执行的目标操作。ConditionVarBlocker给予Java条件变量实现的Blocker.</p>
						<span class="title">适用场景：</span>
						<ol>
							<li>内存可见性和锁泄露</li>
							<li>线程被过早唤醒</li>
							<li>嵌套监视器锁死</li>
							<li>可能增加JVM垃圾回收的负担</li>
						</ol>
					</div>
                </div>
            </div>
        </div>
        <div class="swiper-slide">
            <h3 class="header">在Swiper上加些小动画，制作高大上的展示</h3>
            <div class="main">
                <div class="main-content">
                    <div class="main-inner">
                        <p>使用Swiper再配合一些你喜欢的小动画，你的图片立即变成活灵活现的微场景、微海报。</p>
                        <p>现在就用Swiper展现你的惊人创意。</p>
                        <img src="http://usr.im/400x200?bg=3498DB&amp;text=Swiper" alt="Swiper">
                    </div>
                </div>
            </div>
        </div>
        <div class="swiper-slide">
            <h3 class="header">Swiper 3 的特色功能</h3>
            <div class="main">
                <div class="main-content">
                    <div class="main-inner">
                        <p>无需加载公用库</p>
                        <p>Swiper无需加载任何公共库（如jquery）即可运行，这保证了Swiper的轻量和运行速度。Swiper也可以在加载了公共库的环境下安全的运行，如jQuery, Zepto, jQuery Mobile等。</p>
                        <img src="http://usr.im/400x200?bg=3498DB&amp;text=Swiper" alt="Swiper">
                    </div>
                </div>
            </div>
        </div>
        <div class="swiper-slide">
            <h3 class="header">Swiper 3 的特色功能</h3>
            <div class="main">
                <div class="main-content">
                    <div class="main-inner">
                        <p>其他的特性</p>
                        <p>Swiper3还包含了所有swiper2的牛逼功能，包括自适应、滚动反弹、抵抗反弹、loop模式、嵌套Swiper。</p>
                        <img src="http://usr.im/400x200?bg=3498DB&amp;text=Swiper" alt="Swiper">
                    </div>
                </div>
            </div>
        </div>
        <div class="swiper-slide">
            <h3 class="header">Swiper 3 的特色功能</h3>
            <div class="main">
                <div class="main-content">
                    <div class="main-inner">
                        <p>1:1的触摸滑动</p>
                        <p>Swiper默认的触摸比例为1:1，你可以通过修改Swiper的设置来改变这个比例。</p>
                        <p>监视器</p>
                        <p>Swiper3 增加了开启监视器的选项，有了这个功能Swiper可以在你动态改变Dom或Swiper的样式时自动重新初始化并计算所需的元素。</p>
                        <img src="http://usr.im/400x200?bg=3498DB&amp;text=Swiper" alt="Swiper">
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script src="js/swiper.min.js"></script>
<script src="popup.js"></script>
</body>
</html>